home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d18 / nrpas13.arc / ECLAZZ.PAS < prev    next >
Pascal/Delphi Source File  |  1991-05-01  |  626b  |  22 lines

  1. PROCEDURE eclazz(VAR nf: glnarray; n: integer);
  2. (* Programs using routine ECLAZZ must supply a boolean function
  3. equiv(i,j:integer):boolean which indicates (TRUE or FALSE) whether
  4. i and j belong to the same equivalence class. They must also
  5. define the type
  6. TYPE
  7.    glnarray = ARRAY [1..n] OF integer;
  8. in the main routine. *)
  9. VAR
  10.    kk,jj: integer;
  11. BEGIN
  12.    nf[1] := 1;
  13.    FOR jj := 2 TO n DO BEGIN
  14.       nf[jj] := jj;
  15.       FOR kk := 1 TO jj-1 DO BEGIN
  16.           nf[kk] := nf[nf[kk]];
  17.           IF (equiv(jj,kk)) THEN nf[nf[nf[kk]]] := jj
  18.       END
  19.    END;
  20.    FOR jj := 1 TO n DO nf[jj] := nf[nf[jj]]
  21. END;
  22.